Field of the Invention
The present invention relates to the field of request-response processing in web based computing system, and more particularly to queuing asynchronously produced responses for delivery to a hypertext transfer protocol (HTTP) client in a request-response computing system.
Description of the Related Art
A request-response computing system refers to a computing system configured to receive requests from requesting clients, to process those requests and to provide some sort of response to the requesting clients over a computer communications network. Traditionally web based requests have been synchronous in nature primarily because in the HTTP protocol, the server cannot push responses back to the client. Rather, the HTTP client initiates a request that creates a connection to the server, the server processes the request and sends back the response on the same connection. In web based computing, however, it may be required to have an asynchronous request response pattern of invocation, meaning that the timing of a response to a request can occur at any time subsequent to the receipt of a request.
In a Web based request response computing system, once a request is received in a processing server, the processing server cannot respond to the requester until a response is ready. However, in a asynchronous pattern, while the request is pending, a continuous communications connection is not maintained as between the requestor and the request recipient. Rather, once the response is ready, the response can be forwarded to the requestor. Though not necessarily apparent to the casual observer, though, in many cases, the recipient of the request—namely the processing server—does not proactively forward the response to the requestor according to a push paradigm. Rather, the requester must pull the response as the response becomes available in the processing server according to a pull paradigm.
To simulate a push paradigm, ordinarily the requestor will periodically poll the processing server to determine whether or not a response is ready. Once the response is ready, the requester can actively retrieve the response during a connection with the processing server associated with the polling operation. Thus, for many requests, multiple different connections must be established between the requestor and the processing server in order to achieve effective polling. While more connections during polling can simulate a continuous connection, establishing a connection can be a resource consumptive operation.
Presuming some granularity in the periodicity of connections during polling, a period of time can and in most cases will elapse between the response becoming available and the response being retrieved from the processing server by the requester. During this period of time, the response can be placed in a queue by the recipient of the request. Clearly then, the queuing of a multitude of responses for multiple different requests in the processing server can be resource consumptive and wasteful and can overburden the processing server, especially if the processing server receives a large number of requests for a deferred (asynchronous) response. Additionally, the repeated connections established during polling can burden the processing server.